//转换成消息模版所需要的格式，date 年/月/日 时:分:秒
function timeStampToTime(date) {
    const formatNumber = n => {
      n = n.toString()
      return n[1] ? n : `0${n}`
    }
    const year = date.getFullYear()
    const month = date.getMonth() + 1
    const day = date.getDate()
    const hour = date.getHours()
    const minute = date.getMinutes()
    const second = date.getSeconds()
    return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
  }

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

const db = cloud.database()
const tableName = 'userInfo'

// 云函数入口函数
exports.main = async (event, context) => {
    try {
        // 从云开发数据库中查询等待发送的消息用户列表
        const msgArr = await db
            .collection(tableName)
            .get()
        console.log("msgArr:", msgArr);
        for (const msgData of msgArr.data) {
            // 发送订阅消息
            await cloud.openapi.subscribeMessage.send({
                touser: msgData.openid, // 要发送用户的openid
                page: 'pages/index/index', // 用户通过消息通知点击进入小程序的页面
                lang: 'zh_CN',
                // 订阅消息模板ID
                templateId: 'prkk-ISwwp-FuZhoaoPD6PIz80fHCFsLg6L8gtv0ijw',
                // 跳转小程序类型：developer为开发版；trial为体验版；formal为正式版；默认为正式版
                // 正式版删除此行
                // miniprogramState: 'developer',
                // 要发送的数据，要和模板一致
                data: {
                    thing1: {
                        value: '广平县烟草专卖局'
                    },
                    thing8: {
                        value: '出行安全消息提醒'
                    },
                    date3: {
                        value: timeStampToTime(new Date())
                    },
                    thing2: {
                        value: "出行注意安全，遵守交通规则，做好行程规划"
                    },
                    thing7: {
                        value: msgData.weatherMessage
                    },
                }
            })
        }
    }
    catch (e) {
        console.log(e)
        return e
    }
}